package com.java.design;

/**
 * 说到享元模式，第一个想到的应该就是池技术了，String常量池、数据库连接池、缓冲池等等都是享元模式的应用，所以说享元模式是池技术的重要实现方式。
 * 
 * 比如我们每次创建字符串对象时，都需要创建一个新的字符串对象的话，内存开销会很大，所以如果第一次创建了字符串对象“adam“，
 * 下次再创建相同的字符串”adam“时， 只是把它的引用指向”adam“，这样就实现了”adam“字符串再内存中的共享。
 * 
 * 举个最简单的例子，网络联机下棋的时候，一台服务器连接了多个客户端（玩家），如果我们每个棋子都要创建对象，那一盘棋可能就有上百个对象产生，
 * 玩家多点的话，因为内存空间有限，一台服务器就难以支持了，所以这里要使用享元模式，将棋子对象减少到几个实例。下面给出享元模式的定义。
 * 
 * 其中，Flyweight是抽象享元角色。它是产品的抽象类，同时定义出对象的外部状态和内部状态（外部状态及内部状态相关内容见后方）的接口或实现；
 * ConcreteFlyweight是具体享元角色，是具体的产品类，实现抽象角色定义的业务；
 * UnsharedConcreteFlyweight是不可共享的享元角色，一般不会出现在享元工厂中；
 * FlyweightFactory是享元工厂，它用于构造一个池容器，同时提供从池中获得对象的方法。
 * 
 * @author Administrator
 *
 */
public class FlyweightMode {
	// https://www.cnblogs.com/adamjwh/p/9070107.html
}
